package {{basePackage}}.common;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 错误码枚举
 * 
 * @author {{author}}
 * @version {{version}}
 * @since {{createTime}}
 */
@Getter
@AllArgsConstructor
public enum ErrorCode {

    /**
     * 操作成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 系统错误
     */
    SYSTEM_ERROR(500, "系统错误"),

    /**
     * 参数错误
     */
    INVALID_PARAMS(400, "参数错误"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 请求方法不支持
     */
    METHOD_NOT_ALLOWED(405, "请求方法不支持"),

    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 数据冲突
     */
    CONFLICT(409, "数据冲突"),

    /**
     * 请求实体过大
     */
    PAYLOAD_TOO_LARGE(413, "请求实体过大"),

    /**
     * 请求频率过高
     */
    TOO_MANY_REQUESTS(429, "请求频率过高"),

    /**
     * 业务异常
     */
    BUSINESS_ERROR(600, "业务异常"),

    /**
     * 操作失败
     */
    OPERATION_FAILED(601, "操作失败"),

    /**
     * 数据已存在
     */
    DATA_EXISTS(602, "数据已存在"),

    /**
     * 数据不存在
     */
    DATA_NOT_EXISTS(603, "数据不存在"),

    /**
     * 状态异常
     */
    STATUS_ERROR(604, "状态异常"),

    /**
     * 权限不足
     */
    PERMISSION_DENIED(605, "权限不足");

    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 错误信息
     */
    private final String message;
}
